package enumerations;

public enum AttributesEnum {

	FUNCTIONALITY("The ability of the system to do the work for which it was intended.", "Fu") {
		public String toString() {
			return "FUNCTIONALITY";
		}
	},

	PERFORMANCE("The response time, utilization, and throughput behavior of the system. Not to be confused with human performance or system delivery time.",
			"Pe") {
		public String toString() {
			return "PERFORMANCE";
		}
	},

	SECURITY(
			"A measure of system’s ability to resist unauthorized attempts at usage or behavior modification, while still providing service to legitimate users.",
			"Se") {
		public String toString() {
			return "SECURITY";
		}
	},

	AVAILABILITY(
			"The measure of time that the system is up and running correctly; the length of time between failures and the length of time needed to resume operation after a failure. (Reliability quality attributes falls under this category).",
			"Av") {
		public String toString() {
			return "AVAILABILITY";
		}
	},

	USABILITY("The ease of use and of training the end users of the system. Sub qualities: learnability, efficiency, affect, helpfulness, control.", "Us") {
		public String toString() {
			return "USABILITY";
		}
	},

	INTEROPERABILITY("The ability of two or more systems to cooperate at runtime.", "In") {
		public String toString() {
			return "INTEROPERABILITY";
		}
	},

	RELIABILITY(
			"Reliability is the ability of a system to remain operational over time. Reliability is measured as the probability that a system will not fail to perform its intended functions over a specified time interval.",
			"Re") {
		public String toString() {
			return "RELIABILITY";
		}
	},

	LOOK_AND_FEEL(
			"Is a term used in respect of a graphical user interface and comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces (the 'look'), as well as the behavior of dynamic elements such as buttons, boxes, and menus (the 'feel').",
			"Lf") {
		public String toString() {
			return "LOOK AND FEEL";
		}
	},

	MODIFIABILITY("The ease with which a software system can accommodate changes to its software.", "Mo") {
		public String toString() {
			return "MODIFIABILITY";
		}
	},

	PORTABILITY(
			"The ability of a system to run under different computing environments. The environment types can be either hardware or software, but is usually a combination of the two.",
			"Po") {
		public String toString() {
			return "PORTABILITY";
		}
	},

	REUSABILITY("The degree to which existing applications can be reused in new applications.", "Ru") {
		public String toString() {
			return "REUSABILITY";
		}
	},

	INTEGRABILITY("The ability to make the separately developed components of the system work correctly together.", "It") {
		public String toString() {
			return "INTEGRABILITY";
		}
	},

	TESTABILITY(
			"Testability is a measure of how easy it is to create test criteria for the system and its components, and to execute these tests in order to determine if the criteria are met. Good testability makes it more likely that faults in a system can be isolated in a timely and effective manner.",
			"Te") {
		public String toString() {
			return "TESTABILITY";
		}
	},

	MAINTAINABILITY(
			"Involves a system of continuous improvement - learning from the past in order to improve the ability to maintain systems, or improve reliability of systems based on maintenance experience.",
			"Ma") {
		public String toString() {
			return "MAINTAINABILITY";
		}
	},

	OPERATIONAL("Describe the quality system could be excecuted in any environment.", "Op") {
		public String toString() {
			return "OPERATIONAL";
		}
	},

	SCALABILITY("Is the ability of a system, to handle growing amount of work in a capable manner or its ability to be enlarged to accommodate that growth.",
			"Sc") {
		public String toString() {
			return "SCALABILITY";
		}
	},

	FAULT_TOLERANCE(
			"Even when a particular object fails for some reason, the client must be insulated from the fault. In this manner, the client does not get affected by the fault the system still works.",
			"Ft") {
		public String toString() {
			return "FAULT TOLERANCE";
		}
	},

	LEGAL("Describes the requirements that refer to legal within a software system.", "Le") {
		public String toString() {
			return "LEGAL";
		}
	};

	private String description;

	private String key;

	private AttributesEnum(String description, String key) {
		this.description = description;
		this.key = key;
	}

	public String getDescription() {
		return this.description;
	}

	public String getKey() {
		return this.key;
	}
}
